/**
 *
 */
package com.xscj.dao;

import java.util.List;

import com.xscj.domain.Grade;
import com.xscj.domain.GradeInfo;

/**
 * @author leorain 班级设置底层操作接口
 */
public interface GradeDao {
    /**
     * @author leorain 得到班级总数的底层操作接口
     */
     int getGradeCount();

    /**
     * @author leorain 得到班级列表的底层操作接口
     */
     List<Grade> getAllGrades();

    /**
     * @author leorain得到高一年级所对应届的底层操作接口
     */
     int getMaxYear();

    /**
     * @author leorain得到指定区间内班级个数
     */
     int getValidGradeCount(int minYear, int maxYear);

    /**
     * @author leorain得到指定区间内班级列表
     */
     List<Grade> getValidAllGrades(int minYear, int maxYear);


    /**
     * @author leorain 得到某一届总共有多少个班
     */
     int getClassesCount(int maxYear);


    /**
     * @author leorain 向数据库中添加一条新的班级信息
     */
     int AddGradeToDb(Grade grade);

    /**
     * @author leorain 得到最新一届的班级列表
     */
     List<Grade> getMaxYearGrades(int maxYear);

    /**
     * @author leorain得到某条具体的班级信息
     */
     Grade getGradeBybianHao(String bianHao);

    /**
     * @author leorain
     * 模拟删除 设置删除标志
     */
     void deleteChoiceGrades(String[] gradeStrings);

    /**
     * @author leorain
     * 通过学生学号获得这个学生的班级信息
     */
     Grade getGradeBystuXueHao(int stuXueHao);

    /**
     * @author leorain
     * 得到所有合法的班级信息集合
     */
     List<Grade> getALLValidGrades();

    /**
     * @author leorain
     * @return获得所有班级的详细信息
     */
     List<GradeInfo> getGradeInfos();

    /**
     * @author leorain
     */
     List<Grade> getGradesEnableDel();

    /**
     * @author leorain
     */
     List<Integer> getYears();

    /**
     * @author leorain
     */
     List<GradeInfo> getGradeInfos(int year);

    /**
     * @author leorains
     */
     int hasRecord(String teacherID);

}
